package Test4;

/**
 *
 * @param <T>:代表当前类是个泛型类
 */
class MyArray<T>{
    public Object[] arr=new Object[10];
    public void set(int pos,T val) {
        arr[pos]=val;
    }
    public T get(int pos) {
        return (T)arr[pos];
    }
}

//定义一个泛型类,求出数组最大值
class Alg<T extends Comparable<T>> {
    public T findMax(T[] array) {
        T max=array[0];
        for(int i=1;i<array.length;i++) {
            if(array[i].compareTo(max)>0) {
                max=array[i];
            }
        }
        return max;
    }
}


public class Test2 {

    public static void main(String[] args) {
        Alg<Integer> alg=new Alg<>();//限定了泛型的上界,传入的T的类型,一定得实现了comparable接口
    }

    public static void main4(String[] args) {
        MyArray<Integer> array=new MyArray<>();
        array.set(1,1);
        array.set(2,2);
//        array.set(3,"hello"); //指定当前类型为整形,每次存取数据会检查

    }

    public static void main3(String[] args) {
        MyArray array=new MyArray();
        array.set(0,10);
        array.set(2,1.0);
        array.set(1,"hello");
        String s=(String)array.get(1);//要进行强制类型转换,将返回的Object强转为String才行
    }


    public static void main2(String[] args) {
        Integer a=100;
        Integer b=100;
        System.out.println(a==b);

        Integer c=200;
        Integer d=200;
        System.out.println(c==d);

    }
    public static void main1(String[] args) {
        int i=10;
        //装箱操作，新建一个 Integer 类型对象，将 i 的值放入对象的某个属性中
//        Integer i1=new Integer(i);
        //第一种方式,显式装箱
        Integer i2=Integer.valueOf(i);
        //第二种方式,手动装箱
        Integer i3=i;
    }
}
